import axios from 'axios'
import auth from './auth'
import router from '@/router'
import { ElMessage } from 'element-plus'
// import router from '@/router'
// import { ElMessage } from 'element-plus'



// 创建axios实例
const instance = axios.create({
  baseURL: 'http://geek.itheima.net/',
  timeout: 20*1000
})

// 请求携带token
instance.interceptors.request.use(config => {
  const token = auth.getToken()
  if (token){
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, err => Promise.reject(err))

// 响应拦截器
instance.interceptors.response.use(res => res, err => {
  // 401 失效token 处理
  if (err.status === 401) {
    // 清理失效 token
    auth.delToken()
    // 跳转到登录页, this.$router 只能在 vue 组件中使用，js 文件中需要手动导入
    router.push('/login')
    // 错误提示，this.$message 只能在 vue 组件中使用，js 文件中需要手动导入
    ElMessage.error('token 已失效，请重新登录')
  }
  return Promise.reject(err)
})
// // 添加响应拦截器
// axios.interceptors.response.use(function (response) {
//   // 2xx 范围内的状态码都会触发该函数。
//   // 对响应数据做点什么
//   return response;
// }, function (error) {
//   // 超出 2xx 范围的状态码都会触发该函数。
//   // 对响应错误做点什么
//   if(error.response){
//     ElMessage.error(error.response.data.msg)
//     // 如果是401，跳转到登录页,清空token
//     console.log(error.response.status);

//     if(error.status === 401){
//       router.push('/login')
//       auth.delToken()
//     }
//   }
//   // 如果没有网，直接else
//   else{
//     ElMessage.error('网络错误，请稍后重试')
//  }
//   return Promise.reject(error);
// });


// 响应拦截器
// instance.interceptors.response.use(
//   response => {
//     return response.data
//   },
//   error => {
//     // 如果后端有错误提示
//     if(error.response){
//       ElMessage.error(error.response.data.msg)
//       // 如果是401，跳转到登录页,清空token
//       if(error.response.status === 401){
//         router.push('/login')
//         auth.delToken()
//       }
//     }
//     // 如果没有网，直接else
//     else{
//       ElMessage.error('网络错误，请稍后重试')
//     }
//     return Promise.reject(error)
//   },
// )



// 导出axios实例
export default instance
